package com.pansky.crm.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pansky.crm.common.mybatisplus.ApiResult;
import com.pansky.crm.common.mybatisplus.QueryWapperUtils;
import com.pansky.crm.common.mybatisplus.ResultPageDto;
import com.pansky.crm.common.mybatisplus.SuperServiceImpl;
import com.pansky.crm.entity.MessageManagement;
import com.pansky.crm.entity.bo.page.MessageManagementBO;
import com.pansky.crm.entity.vo.MessageManagementVO;
import com.pansky.crm.mapper.mysql.MessageManagementMapper;
import com.pansky.crm.service.MessageManagementService;
import com.pansky.crm.util.BeanUtil;
import org.springframework.stereotype.Service;

import java.util.stream.Collectors;

/**
 * @author ：guochi
 * @date ：Created in 2021-03-09 19:00
 * @description：消息管理serviceImpl
 */
@Service
@DS("mysqlDb")
public class MessageManagementServiceImpl
        extends SuperServiceImpl<MessageManagementMapper, MessageManagement>
        implements MessageManagementService {

    @Override
    public ApiResult<ResultPageDto> queryByPage(MessageManagementBO messageManagementBO) {
        IPage<MessageManagement> page = new Page<>(messageManagementBO.getPage(),
                messageManagementBO.getLimit());
        QueryWrapper<MessageManagement> queryWrapper =
                QueryWapperUtils.queryToWrapper(messageManagementBO, MessageManagement.class);
        queryWrapper.orderByAsc("id");
        IPage<MessageManagement> dbResult = page(page, queryWrapper);
        //业务数据
        ResultPageDto resultPageDto = defaultTransformPageData(dbResult,
                transform -> dbResult.getRecords().stream().map(messageManagement -> {
                    MessageManagementVO msgVO = new MessageManagementVO();
                    BeanUtil.copyProperties(messageManagement, msgVO);
                    return msgVO;
                }).collect(Collectors.toList()));
        return ApiResult.ok(resultPageDto);
    }
}
